package com.aboo.po;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * @author Yata Aboo
 * @Date 2012-9-17
 * @Desc 基础PO类，Model层的POJO类需要继承本类
 */
public class BasePO implements Serializable {

	private static final long serialVersionUID = -4310031009232464575L;

	/** 主键 */
	private Integer id;
	/** 记录是否有效，Y表示有效，N表示无效  */
	private String inUse = "Y";
	/** 查询时开始索引，不关联至数据库 */
	private Integer beginIndex;
	/** 查询时结束索引，不关联至数据库 */
	private Integer endIndex;
	/** 查询时排序属性，不关联至数据库 */
	private List<String> sortList;
	/** 查询时，存入不等值条件，包括大于、小于、大于等于...... */
	private List<HashMap<String, Object>> conditionList;
	/** 查询时，存入原生SQL */
	private List<String> sqlList;
	
	/**
	 * 获取主键
	 * @return 主键值
	 */
	public Integer getId() {
		return id;
	}
	/**
	 * 设置主键
	 * @param id 主键值
	 */
	public void setId(Integer id) {
		this.id = id;
	}
	/**
	 * 获取记录有效性属性
	 * @return 记录有效性
	 */
	public String getInUse() {
		return inUse;
	}
	/**
	 * 设置记录有效性属性
	 * @param inUse 记录有效性
	 */
	public void setInUse(String inUse) {
		this.inUse = inUse;
	}
	
	/**
	 * 添加查询时的排序方式
	 * @param columnName 字段名称
	 * @param sortType 升降序属性
	 */
	public void addSort(String columnName, String sortType) {
		if (sortList == null) {
			sortList = new ArrayList<String>();
		}
		sortList.add(columnName + " " + sortType);
	}
	
	/**
	 * 添加查询时的不等值条件，包括大于、小于、大于等于......
	 * @param columnName 字段名称
	 * @param condition 条件值，大于、小于、大于等于......
	 * @param obj 字段值
	 */
	public void addCondition(String columnName, String condition, Object obj) {
		if (conditionList == null) {
			conditionList = new ArrayList<HashMap<String, Object>>();
		}
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("condition", columnName + " " + condition);
		map.put("value", obj);
		conditionList.add(map);
	}
	
	/**
	 * 添加原生SQL语句
	 * @param sql SQL语句
	 */
	public void addSQL(String sql) {
		if (sqlList == null) {
			sqlList = new ArrayList<String>();
		}
		sqlList.add(sql);
	}
	
	/**
	 * 清空排序条件
	 */
	public void clearSort() {
		if (sortList != null) {
			sortList.clear();
		}
	}
	
	/**
	 * 清空查询条件
	 */
	public void clearCondition() {
		if (conditionList != null) {
			conditionList.clear();
		}
	}
	
	/**
	 * 清空原生SQL条件
	 */
	public void clearSQL() {
		if (sqlList != null) {
			sqlList.clear();
		}
	}
	
	/**
	 * 清空历史内容
	 */
	public void clear() {
		clearSort();
		clearCondition();
		clearSQL();
	}
	
	/**
	 * 获取查询开始索引
	 * @return 开始索引
	 */
	public Integer getBeginIndex() {
		return beginIndex;
	}
	/**
	 * 设置查询开始索引
	 * @param beginIndex 开始索引
	 */
	public void setBeginIndex(Integer beginIndex) {
		this.beginIndex = beginIndex;
	}
	/**
	 * 获取查询结束索引
	 * @return 结束索引
	 */
	public Integer getEndIndex() {
		return endIndex;
	}
	/**
	 * 设置查询结束索引
	 * @param endIndex 结束索引
	 */
	public void setEndIndex(Integer endIndex) {
		this.endIndex = endIndex;
	}
	/**
	 * 获取查询排序方式集合
	 * @return 查询排序方式集合
	 */
	public List<String> getSortList() {
		return sortList;
	}
	/**
	 * 设置查询排序方式集合
	 * @param sortList 查询排序方式集合
	 */
	public void setSortList(List<String> sortList) {
		this.sortList = sortList;
	}
	/**
	 * 获取存入不等值条件
	 * @return 存入不等值条件集合
	 */
	public List<HashMap<String, Object>> getConditionList() {
		return conditionList;
	}
	/**
	 * 设置存入不等值条件
	 * @param conditionList 存入不等值条件集合
	 */
	public void setConditionList(List<HashMap<String, Object>> conditionList) {
		this.conditionList = conditionList;
	}
	/**
	 * 获取原生SQL
	 * @return
	 */
	public List<String> getSqlList() {
		return sqlList;
	}
	/**
	 * 设置原生SQL
	 * @param sqlList SQL语句
	 */
	public void setSqlList(List<String> sqlList) {
		this.sqlList = sqlList;
	}
	
}
